package com.cmdi.opensite.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cmdi.opensite.entity.Registration;

import java.util.List;

/**
 * 报名服务接口
 */
public interface RegistrationService extends IService<Registration> {
    
    /**
     * 报名活动
     */
    boolean registerActivity(Long activityId, Long userId);
    
    /**
     * 取消报名
     */
    boolean cancelRegistration(Long id, Long userId);
    
    /**
     * 查询用户是否已报名活动
     */
    boolean hasRegistered(Long activityId, Long userId);
    
    /**
     * 查询活动的报名记录
     */
    IPage<Registration> getActivityRegistrations(IPage<Registration> page, Long activityId);
    
    /**
     * 查询用户的报名记录
     */
    IPage<Registration> getUserRegistrations(IPage<Registration> page, Long userId);
    
    /**
     * 更新报名状态
     */
    boolean updateRegistrationStatus(Long id, Integer status);
    
    /**
     * 批量更新报名状态
     */
    boolean batchUpdateStatus(List<Long> ids, Integer status);
    
    /**
     * 活动签到
     */
    boolean checkIn(Long id);
    
    /**
     * 查询活动已确认的报名人数
     */
    int getConfirmedCount(Long activityId);
}